/**
 * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors
 * SPDX-FileCopyrightText: 2013-2015 ownCloud, Inc.
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */

window.addEventListener('DOMContentLoaded', function() {
	$('input:button[name="enableRecoveryKey"]').click(function() {
		const recoveryStatus = $(this).attr('status')
		const newRecoveryStatus = (1 + parseInt(recoveryStatus)) % 2
		const buttonValue = $(this).attr('value')

		const recoveryPassword = $('#encryptionRecoveryPassword').val()
		const confirmPassword = $('#repeatEncryptionRecoveryPassword').val()
		OC.msg.startSaving('#encryptionSetRecoveryKey .msg')
		$.post(
			OC.generateUrl('/apps/encryption/ajax/adminRecovery'),
			{
				adminEnableRecovery: newRecoveryStatus,
				recoveryPassword,
				confirmPassword,
			},
		).done(function(data) {
			OC.msg.finishedSuccess('#encryptionSetRecoveryKey .msg', data.data.message)

			if (newRecoveryStatus === 0) {
				$('p[name="changeRecoveryPasswordBlock"]').addClass('hidden')
				$('input:button[name="enableRecoveryKey"]').attr('value', 'Enable recovery key')
				$('input:button[name="enableRecoveryKey"]').attr('status', '0')
			} else {
				$('input:password[name="changeRecoveryPassword"]').val('')
				$('p[name="changeRecoveryPasswordBlock"]').removeClass('hidden')
				$('input:button[name="enableRecoveryKey"]').attr('value', 'Disable recovery key')
				$('input:button[name="enableRecoveryKey"]').attr('status', '1')
			}
		})
			.fail(function(jqXHR) {
				$('input:button[name="enableRecoveryKey"]').attr('value', buttonValue)
				$('input:button[name="enableRecoveryKey"]').attr('status', recoveryStatus)
				OC.msg.finishedError('#encryptionSetRecoveryKey .msg', JSON.parse(jqXHR.responseText).data.message)
			})
	})

	$('#repeatEncryptionRecoveryPassword').keyup(function(event) {
		if (event.keyCode == 13) {
			$('#enableRecoveryKey').click()
		}
	})

	// change recovery password

	$('button:button[name="submitChangeRecoveryKey"]').click(function() {
		const oldRecoveryPassword = $('#oldEncryptionRecoveryPassword').val()
		const newRecoveryPassword = $('#newEncryptionRecoveryPassword').val()
		const confirmNewPassword = $('#repeatedNewEncryptionRecoveryPassword').val()
		OC.msg.startSaving('#encryptionChangeRecoveryKey .msg')
		$.post(
			OC.generateUrl('/apps/encryption/ajax/changeRecoveryPassword'),
			{
				oldPassword: oldRecoveryPassword,
				newPassword: newRecoveryPassword,
				confirmPassword: confirmNewPassword,
			},
		).done(function(data) {
			OC.msg.finishedSuccess('#encryptionChangeRecoveryKey .msg', data.data.message)
		})
			.fail(function(jqXHR) {
				OC.msg.finishedError('#encryptionChangeRecoveryKey .msg', JSON.parse(jqXHR.responseText).data.message)
			})
	})

	$('#encryptHomeStorage').change(function() {
		$.post(
			OC.generateUrl('/apps/encryption/ajax/setEncryptHomeStorage'),
			{
				encryptHomeStorage: this.checked,
			},
		)
	})
})
